<?php
/**
 * @package     JBDump test
 * @version     1.2.0
 * @author      admin@joomla-book.ru
 * @link        http://joomla-book.ru/
 * @copyright   Copyright (c) 2009-2011 Joomla-book.ru
 * @license     GNU General Public License version 2 or later; see LICENSE
 * 
 */

 
include './included_file.php';

JBDump::showErrors(1);

$a = $b = "";

$jbdump = JBDump();
$jbdump->mark('Start test');

for ($i=1;$i<1000000;$i++){$a=sin($i);};
$jbdump->mark('CPU: million sin()');

for ($i=1;$i<1000000;$i++){$c= $a.$b;};
$jbdump->mark('CPU: million string concat');

for ($i=1;$i<1000000;$i++){$c= "$a$b";};
$jbdump->mark('CPU: million string concat in enclose');

for ($i=1;$i<1000000;$i++){implode("", array($a, $b));};
$jbdump->mark('CPU: million string with array');



if (1){
    $mysql_server   = 'localhost';
    $mysql_user     = 'root';
    $mysql_password = 'root';
    $mysql_db       = 'jbdump';

    function my_query($sql) {
        $ret = mysql_query($sql) or die(mysql_error()."</br>Запрос:".$sql);
        return $ret;
    }
	
    //=====================================
	$link = mysql_connect($mysql_server, $mysql_user, $mysql_password);
	if (!$link) { die('Невозможно соединиться: ' . mysql_error()); }
	mysql_close($link);
	$jbdump->mark('MySQL: соединение/разъединение'); 

	//=====================================
	$link = mysql_connect($mysql_server, $mysql_user, $mysql_password);
	if (!$link) {
		die('Невозможно соединиться: ' . mysql_error());
	}
    mysql_select_db($mysql_db);
	my_query('SELECT BENCHMARK(1000000, (select sin(100)))');
	$jbdump->mark('MySQL: benchmark (млн. синусов )');

	//=====================================
	mysql_select_db($mysql_db);
	my_query('drop table if exists hostertester_test',$link);
	my_query('create table hostertester_test(a int) type=MyISAM',$link);
	for ($i=1;$i<10000;$i++) { my_query('insert into hostertester_test values ('.$i.')');};
	$jbdump->mark('MySQL: 10000 вставок строк');
	
	//=====================================
	mysql_select_db($mysql_db);
	$result = my_query('select * from hostertester_test where a>0');

	while ($row = mysql_fetch_assoc($result)) ;
	my_query('drop table if exists hostertester_test',$link);
	$jbdump->mark('MySQL: 10000 select и fetch'); 

	//=====================================
	echo '<table>';
    mysql_select_db($mysql_db);
	$result=my_query('select version();');
    if ($row = mysql_fetch_array($result)) {
		$str =$row[0];
		$mysqlver=$str;
		echo '<tr><td>Версия MySQL:</td><td>'.$str.' </td></tr>'; 
    }
	mysql_free_result($result);
    
	//=====================================
	mysql_select_db($mysql_db);
	
	$result1=my_query('show '.($mysqlver[0]=='5'?'global':'').' status like "%Uptime%";');
    $row1 = mysql_fetch_array($result1); 
	$str =$row1[1];
	echo '<tr><td>Время работы сервера:</td><td>'.$str.' сек.,('.round($row1[1]/3600,2).' ч.) </td></tr>'; 
	
	$result2=my_query('show  '.($mysqlver[0]=='5'?'global':'').' status like "%Bytes_sent%";');
    $row2 = mysql_fetch_array($result2);
	$str =round($row2[1]/$row1[1],2);
	echo '<tr><td>Выдача байт в секунду в среднем:</td><td> '.$str.' байт ( '.$row2[1].' за весь uptime)</td></tr>'; 

	$result3=my_query('show '.($mysqlver[0]=='5'?'global':'').' status like "%Connections%";');
    $row3 = mysql_fetch_array($result3);
	$str =round($row3[1]/$row1[1],5);
	echo '<tr><td>Соединений в секунду в среднем:</td><td>'.$str.' ( '.$row3[1],' за весь uptime )</td></tr>'; 

	$result4=my_query('show '.($mysqlver[0]=='5'?'global':'').' status like "%Com_select%";');
    $row4 = mysql_fetch_array($result4);
	$str =round($row4[1]/$row1[1],5);
	echo '<tr><td>Запросов SELECT в секунду в среднем:</td><td>'.$str.' (  '.$row4[1].' за весь uptime)</td></tr>'; 
    echo '</table>';
	mysql_free_result($result1);
	mysql_free_result($result2);
	mysql_free_result($result3);
	mysql_free_result($result4);
	//=====================================
	
	mysql_close($link);
}


$filename = 'hostertester_test.txt';
if (!$handle = fopen($filename, 'w'))  die ("Не могу открыть файл ($filename) на запись");        

for ($i=1;$i<1000000;$i++){
    if (fwrite($handle, "1") === FALSE) die ("Не могу произвести запись в файл ($filename)");
}  
fclose($handle);
$jbdump->mark('CPU: million write to file');


if (!$handle = fopen($filename, 'r'))  die ("Не могу открыть файл ($filename) на чтение");
while (!feof($handle)) {
    fread($handle, 1); // читаем по 1 байту
}  
fclose($handle);
unlink ($filename);
$jbdump->mark('CPU: million reade from file');
